package com.dmz.wxcp.wecom.wxbusiness.service.impl;

import com.dmz.wxcp.constants.Constant;
import com.dmz.wxcp.redis.RedisUtils;
import com.dmz.wxcp.wecom.common.service.RedisService;
import com.dmz.wxcp.wecom.wxbusiness.entity.ArticleTags;
import com.dmz.wxcp.wecom.wxbusiness.mapper.ArticleTagsMapper;
import com.dmz.wxcp.wecom.wxbusiness.mapper.ProductMapper;
import com.dmz.wxcp.wecom.wxbusiness.service.ProductService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.concurrent.TimeUnit;

@Service
public class ProductCategoryImpl implements ProductService {

    @Autowired
    private RedisService redisService;
    @Autowired
    private ArticleTagsMapper tagsMapper;
    @Autowired
    private ProductMapper productMapper;
//    @Override
//    public List<ProductCategory> getProductCategorylist() {
////        获取产品分类
//        List<ProductCategory> productCategories=new ArrayList<>();
//        String i= Constant.MOBILE_PRODUCTCATEGORYLIST;
////        现在redis中查找
//        if(redisService.hasKey(i)){
//            productCategories= RedisUtils.RedisToObjectList(redisService.get(i).toString(),ProductCategory.class);
//        }else{
////            如果没有就从数据库中查找
//            productCategories=productMapper.getProductCategorys();
//            redisService.set(i,productCategories,5, TimeUnit.MINUTES);
//        }
//        return productCategories;
//    }

//    @Override
//    public Map<String,Object> getTags() {
//
////        List<String> articleTagLsit=new ArrayList<>();
//        Map<String,Object> map=new HashMap<>();
//        String i= Constant.MOBILE_ARTICLETAGLIST;
//        if(redisService.hasKey(i)){
////            articleTagLsit= RedisUtils.RedisToObjectList(redisService.get(i).toString(),String.class);
//            map= RedisUtils.RedisToMap(redisService.get(i).toString());
//        }else{
//            List<String> tags=productMapper.selectTags();
//           for(String tag:tags){
//               String[] items=tag.split(",");
//               for(String item:items){
//                   if(item.length()!=0){
//                       map.put(item,"");
//                   }
//               }
//           }
//            redisService.set(i,map,5, TimeUnit.MINUTES);
//        }
//        return map;
//    }

    @Override
    public Map<String, Object> getTags() {

//        分别获取热门标签和最新标签 先从redis中获取
        List<ArticleTags> hottags=new ArrayList<>();
        List<ArticleTags> newtagslist=new ArrayList<>();
        String hot= Constant.MOBILE_HOT_PRODUCTARTICLETAGLIST;
        String newtags= Constant.MOBILE_NEW_PRODUCTARTICLETAGLIST;
        if(redisService.hasKey(hot)){
            hottags= RedisUtils.RedisToObjectList(redisService.get(hot).toString(), ArticleTags.class);
        }else{
            hottags=tagsMapper.getHotArticleTag(6);
            redisService.set(hot,hottags,2, TimeUnit.MINUTES);
        }

        if(redisService.hasKey(newtags)){
            newtagslist= RedisUtils.RedisToObjectList(redisService.get(newtags).toString(), ArticleTags.class);
        }else{
            newtagslist=tagsMapper.getNewArticleTag(6);
            redisService.set(newtags,newtagslist,2, TimeUnit.MINUTES);
        }

        Map<String,Object> map=new HashMap<>();
        map.put("hot",hottags);
        map.put("new",newtagslist);
        return map;
    }
}
